WPF如何将datagrid绑定到多张表并且允许编辑

您所在的位置:网站首页 wpf datagrid 编辑 WPF如何将datagrid绑定到多张表并且允许编辑

WPF如何将datagrid绑定到多张表并且允许编辑

2023-04-14 19:01| 来源: 网络整理| 查看: 265

 好久前在边学WPF边做开发的时候 就遇到了“怎么将datagrid 的数据源设置为多个表的集合”的问题,办法是有,像使用CollectionContainer等, 但是这些方法都会有一个相同的问题就是无法在datagrid里进行编辑。。 今天终于找到一个比较不错的方法了。。。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

using System.Data;

using ShoppingCard.Core;

using System.Collections;

namespace ShoppingCard.Views {

    ///

    /// Card_Management.xaml 的交互逻辑

    ///

    public partial class CardManagement : UserControl {

        DataTable dt;

        public CardManagement() {

            InitializeComponent();

        }

// 这个类比较的重要。。。

        public class CardJoin {

            public DataRow ShoppingCardRow { get; set; }

            public DataRow ShoppingCardInventoryRow { get; set; }

            public CardJoin(DataRow _ShoppingCardRow, DataRow _ShoppingCardInventoryRow) {

                ShoppingCardRow = _ShoppingCardRow;

                ShoppingCardInventoryRow = _ShoppingCardInventoryRow;

            }

        }

        public void init() {

            dt = DBOperation.GetDBDataSet("ShoppingCard").Tables[0];

   //下面的查询就是把两个datatable的数据查询出来。。。

            var Join = from a in dt.AsEnumerable()

                       join b in DBOperation.GetDBDataSet("ShoppingCardInventory").Tables[0].AsEnumerable()

                       on a.Field("CardName") equals b.Field("CardName")

                       select new CardJoin(a, b);

            List list = new List();

            foreach (var data in Join)

                list.Add(data);

            dgCardManagement.ItemsSource = list;

        }

    }

}

前台代码(datagrid的绑定):

注意:Binding="{Binding Path=ShoppingCardInventoryRow[CardName] 注意文中红色字体。。。

               

                   

                   

                   

                   

               

           

CardName、CardDescription、Image是ShoppingCard表里的字段

CardName、Denomination是ShoppingCardInventor表里的字段

WPF如何将datagrid绑定到多张表并且允许编辑


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3